package com.cnpc.fyutils;

import android.text.TextUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by songzhiiyn on 2017/2/6.
 * 验证数据的工具类
 */

public class VerifyUtils{
    /**
     * 验证手机格式
     */
    public static boolean isMobileNO(String mobiles) {
        String pat = "[1][34578]\\d{9}";
        Pattern pattern = Pattern.compile(pat);
        Matcher matcher = pattern.matcher(mobiles);
        boolean b = matcher.matches();
        return b;
    }
    /**
     * 校验手机号是否合法
     *
     */
    public  static boolean checkPhoneCode(String phone) {
        Pattern p = Pattern.compile("(\\+\\d{2}\\s{0,1}|\\d{0,4}\\s{0,1})\\d{7,14}");
        if (TextUtils.isEmpty(phone)) {
            ToastUtils.show_toast("请输入手机号");
            return false;
        }
        if (phone.length() < 7) {
            ToastUtils.show_toast("请输入正确的手机号码");
            return false;
        }
        if (!p.matcher(phone).matches()) {
            ToastUtils.show_toast("请输入正确的手机号码");
            return false;
        }
        return true;
    }
    public static boolean checkPwd(String pwd) {
        if (TextUtils.isEmpty(pwd)) {
            ToastUtils.show_toast("请输入您的密码");
            return false;
        } else if (pwd.length() < 6) {
            ToastUtils.show_toast("密码位数不能少于6位，请您重新输入");
            return false;
        } else if (pwd.length() > 20) {
            ToastUtils.show_toast("密码位数不能多于20位，请您重新输入");
            return false;
        }
        return true;
    }
    public static boolean checkPwdold(String pwd) {
        if (TextUtils.isEmpty(pwd)) {
            ToastUtils.show_toast("原密码不能为空");
            return false;
        } else if (pwd.length() < 6) {
            ToastUtils.show_toast("密码位数不能少于6位，请您重新输入");
            return false;
        } else if (pwd.length() > 20) {
            ToastUtils.show_toast("密码位数不能多于20位，请您重新输入");
            return false;
        }
        return true;
    }
    public static boolean checkPwdnew(String pwd) {
        if (TextUtils.isEmpty(pwd)) {
            ToastUtils.show_toast("新密码不能为空");
            return false;
        } else if (pwd.length() < 6) {
            ToastUtils.show_toast("密码位数不能少于6位，请您重新输入");
            return false;
        } else if (pwd.length() > 20) {
            ToastUtils.show_toast("密码位数不能多于20位，请您重新输入");
            return false;
        }
        return true;
    }
    public static boolean checkIsRepeat(String oldpwd,String newpwd) {
        if (TextUtils.isEmpty(oldpwd) || TextUtils.isEmpty(newpwd) || !oldpwd.equals(newpwd)) {
            ToastUtils.show_toast("您输入的密码不样，请您重新输入");
            return false;
        }
        return true;
    }
    /**
     * 校验验证码是否合法
     * */
    public static boolean  checkVerifyCode(String verifyCode) {
        Pattern p = Pattern.compile("^\\d{4}$");
        if (TextUtils.isEmpty(verifyCode)) {
            ToastUtils.show_toast("请输入验证码");
            return false;
        }
        if (!p.matcher(verifyCode).matches()) {
            ToastUtils.show_toast("请输入4位数字验证码");
            return false;
        }
        return true;
    }
    /**
     * 验证企业咻咻号
     */
    public static boolean IsEnterpriseNumberNO(String mobiles) {
        String pat = "[0123456789][0123456789]\\d{5}";
        Pattern pattern = Pattern.compile(pat);
        Matcher matcher = pattern.matcher(mobiles);
        boolean b = matcher.matches();
        return b;
    }
    /**
     * 验证个人咻咻号
     */
    public static boolean IsUserNumberNO(String mobiles) {
        String pat = "[0123456789][0123456789]\\d{6}";
        Pattern pattern = Pattern.compile(pat);
        Matcher matcher = pattern.matcher(mobiles);
        boolean b = matcher.matches();
        return b;
    }

    /**
     * 身份证的算法
     *
     * @param id
     * @return
     */
    public static boolean verify_identification(String id) {
        if (id.length() != 18)
            return false;
		/*
		 * 1、将前面的身份证号码17位数分别乘以不同的 系数。 从第一位到第十七位的系数分别为：
		 * 7－9－10－5－8－4－2－1－6－3－7－9－10－5－8－4－2。 将这17位数字和系数相乘的结果相加。
		 */
        int[] w = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
        int sum = 0;
        for (int i = 0; i < w.length; i++) {
            sum += (id.charAt(i) - '0') * w[i];
        }
        // 用加出来和除以11，看余数是多少？
        char[] ch = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
        // return ch[sum%11]==
        // (id.charAt(17)=='x'?'X': id.charAt(17));
        int c = sum % 11;
		/*
		 * 分别对应的最近 一位身份证的号码为 1－0－X－9－8－7－6－5－4－3－2。
		 */
        char code = ch[c];
        char last = id.charAt(17);
        last = last == 'x' ? 'X' : last;
        return last == code;
    }

}
